home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / nos042_s / timer.h < prev    next >
C/C++ Source or Header  |  1994-09-16  |  3KB  |  85 lines

  1. /****************************************************************************
  2. *    timer.h                                                                    *
  3. *    $Id: timer.h 1.2 93/07/16 11:51:38 ROOT_DOS Exp $
  4. *    04 Jul 93    1.2        GT    Fix warnings.                                    *
  5. *
  6. *  ATARI Version by David Nash - dnash@chaos.demon.co.uk
  7. *
  8. *  Adjust MSPTICK and add extern int to Tick, Cfunct
  9. *  pause -> Pause to prevent conflict with Lattice C V5.6
  10. *
  11. ****************************************************************************/
  12.  
  13. #ifndef    _TIMER_H
  14. #define    _TIMER_H
  15.  
  16. #ifndef    _GLOBAL_H
  17. #include "global.h"
  18. #endif
  19.  
  20. /* Software timers
  21.  * There is one of these structures for each simulated timer.
  22.  * Whenever the timer is running, it is on a linked list
  23.  * pointed to by "Timers". The list is sorted in ascending order of
  24.  * expiration, with the first timer to expire at the head. This
  25.  * allows the timer process to avoid having to scan the entire list
  26.  * on every clock tick; once it finds an unexpired timer, it can
  27.  * stop searching.
  28.  *
  29.  * Stopping a timer or letting it expire causes it to be removed
  30.  * from the list. Starting a timer puts it on the list at the right
  31.  * place.
  32.  */
  33. struct timer {
  34.     struct timer *next;    /* Linked-list pointer */
  35.     int32 duration;        /* Duration of timer, in ticks */
  36.     int32 expiration;    /* Clock time at expiration */
  37.     void (*func) __ARGS((void *));    /* Function to call at expiration */
  38.     void *arg;        /* Arg to pass function */
  39.     char state;        /* Timer state */
  40. #define    TIMER_STOP    0
  41. #define    TIMER_RUN    1
  42. #define    TIMER_EXPIRE    2
  43. };
  44. #define    NULLTIMER    (struct timer *)0
  45. #define    MAX_TIME    (int32)4294967295    /* Max long integer */
  46. #ifndef    MSPTICK
  47. #ifndef  ATARI
  48. #define    MSPTICK        55        /* Milliseconds per tick */
  49. #else
  50. #define  MSPTICK        20        /* Milliseconds per tick */
  51. #endif
  52. #endif
  53. /* Useful user macros that hide the timer structure internals */
  54. #define    dur_timer(t)    ((t)->duration*MSPTICK)
  55. #define    run_timer(t)    ((t)->state == TIMER_RUN)
  56.  
  57. #ifndef ATARI
  58. extern int Tick;
  59. extern void (*Cfunc[]) __ARGS((void));    /* List of clock tick functions */
  60. #else
  61. volatile extern int Tick;
  62. extern void (*Cfunc[]) (void);    /* List of clock tick functions */
  63. #endif
  64.  
  65. /* In timer.c: */
  66. void alarm __ARGS((int32 ms));
  67.  
  68. #ifndef ATARI
  69. int pause __ARGS((int32 ms));
  70. #else
  71. int Pause __ARGS((int32 ms));
  72. #endif
  73.  
  74. int32 read_timer __ARGS((struct timer *t));
  75. void set_timer __ARGS((struct timer *t,int32 x));
  76. void start_timer __ARGS((struct timer *t));
  77. void stop_timer __ARGS((struct timer *timer));
  78. char *tformat __ARGS((int32 t));
  79.  
  80. /* In hardware.c: */
  81. int32 msclock __ARGS((void));
  82. int32 secclock __ARGS((void));
  83.  
  84. #endif    /* _TIMER_H */
  85.